function Stack() {
  // 集合
  this.items = [];
}
// - `push()` 添加一个新元素到栈顶位置。
Stack.prototype.push = function (item) {
  return this.items.push(item);
}
// - `pop()` 移除栈顶的元素，同时返回被移除的元素。
Stack.prototype.pop = function () {
  return this.items.pop();
}
// - `peek()` 返回栈顶的元素，不对栈做任何修改（该方法不会移除栈顶的元素，仅仅返回它）。
Stack.prototype.peek = function () {
  return this.items[this.items.length - 1];
}
// - `isEmpty()` 如果栈里没有任何元素就返回 `true`，否则返回 `false`。
Stack.prototype.isEmpty = function () {
  return this.items.length === 0;
}
// - `size()` 返回栈里的元素个数。这个方法和数组的 `length` 属性类似。
Stack.prototype.size = function () {
  return this.items.length;
}
// - `toString()` 将栈结构的内容以字符串的形式返回。
Stack.prototype.toString = function () {
  let str = '';
  for (var i = 0; i < this.items.length; i++) {
    str += ',' + this.items[i];
  }
  // 去掉第一个逗号
  str = str.substring(1);
  return str;
}

module.exports = Stack;